home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / db4less3.arc / INVOICE.FRG < prev    next >
Text File  |  1990-06-16  |  7KB  |  385 lines

  1. * Program............: D:\DBSYS\CLASSES\BT4W\INVOICE.FRG
  2. * Date...............: 11-17-88
  3. * Versions...........: dBASE IV, Report 1
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap
  16.  
  17. *-- Test for no records found
  18. IF EOF() .OR. .NOT. FOUND()
  19.    RETURN
  20. ENDIF
  21.  
  22. *-- turn word wrap mode off
  23. _wrap=.F.
  24.  
  25. IF _plength < 2
  26.    SET DEVICE TO SCREEN
  27.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  28.    ACTIVATE WINDOW gw_report
  29.    @ 0,1 SAY "Increase the page length for this report."
  30.    @ 2,1 SAY "Press any key ..."
  31.    x=INKEY(0)
  32.    DEACTIVATE WINDOW gw_report
  33.    RELEASE WINDOW gw_report
  34.    RETURN
  35. ENDIF
  36.  
  37. _plineno=0          && set lines to zero
  38. *-- NOEJECT parameter
  39. IF gl_noeject
  40.    IF _peject="BEFORE"
  41.       _peject="NONE"
  42.    ENDIF
  43.    IF _peject="BOTH"
  44.       _peject="AFTER"
  45.    ENDIF
  46. ENDIF
  47.  
  48. *-- Set-up environment
  49. ON ESCAPE DO prnabort
  50. IF SET("TALK")="ON"
  51.    SET TALK OFF
  52.    gc_talk="ON"
  53. ELSE
  54.    gc_talk="OFF"
  55. ENDIF
  56. gc_space=SET("SPACE")
  57. SET SPACE OFF
  58. gc_time=TIME()      && system time for predefined field
  59. gd_date=DATE()      && system date  "    "    "     "
  60. gl_fandl=.F.        && first and last page flag
  61. gl_prntflg=.T.      && Continue printing flag
  62. gl_widow=.T.        && flag for checking widow bands
  63. gn_length=LEN(gc_heading)  && store length of the HEADING
  64. gn_level=2          && current band being processed
  65. gn_page=_pageno     && grab current page number
  66.  
  67. *-- Initialize group footer field variables
  68. r_foot1=.F.
  69. r_foot2=.F.
  70.  
  71. *-- Initialize calculated variables.
  72. STRDATE=""
  73. COMPDAYS=FLOAT(0)
  74.  
  75. *-- Set up procedure for page break
  76. IF _pspacing > 1
  77.    gn_atline=_plength - (_pspacing + 1)
  78. ELSE
  79.    gn_atline=_plength - 1
  80. ENDIF
  81. ON PAGE AT LINE gn_atline EJECT PAGE
  82.  
  83. *-- Print Report
  84.  
  85. PRINTJOB
  86.  
  87. gl_newpage=.T.      && ok to begin band on new page
  88.  
  89. *-- Initialize group break vars.
  90. r_mvar4=JOBDESC
  91. r_mvar5=FUNDESC
  92.  
  93. *-- Initialize summary variables.
  94. FUNHOURS=0
  95. JOBHOURS=0
  96. r_msum1=0
  97.  
  98. *-- Assign initial values to calculated variables.
  99. STRDATE='February 15, 1989'
  100. COMPDAYS=compdate-startdate
  101.  
  102. IF gl_plain
  103.    ON PAGE AT LINE gn_atline DO Pgplain
  104. ELSE
  105.    ON PAGE AT LINE gn_atline DO Pgfoot
  106. ENDIF
  107.  
  108. DO Pghead
  109.  
  110. gl_fandl=.T.        && first physical page started
  111.  
  112. DO Grphead
  113.  
  114. *-- File Loop
  115. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  116.    DO CASE
  117.    CASE .NOT. (JOBDESC = r_mvar4)
  118.       gn_level=4
  119.    CASE .NOT. (FUNDESC = r_mvar5)
  120.       gn_level=5
  121.    OTHERWISE
  122.       gn_level=0
  123.    ENDCASE
  124.    *-- test whether an expression didn't match
  125.    IF gn_level <> 0
  126.       DO Grpfoot WITH 100-gn_level
  127.       DO Grpinit
  128.    ENDIF
  129.    *-- Repeat group intros
  130.    IF gn_level <> 0
  131.       DO Grphead
  132.    ENDIF
  133.    DO Upd_Vars
  134.    r_foot1=FUNDESC
  135.    r_foot2=BIDPRICE
  136.    CONTINUE
  137. ENDDO
  138.  
  139. IF gl_prntflg
  140.    gn_level=3
  141.    DO Grpfoot WITH 97
  142. ELSE
  143.    DO Reset
  144.    RETURN
  145. ENDIF
  146.  
  147. ON PAGE
  148.  
  149. ENDPRINTJOB
  150.  
  151. DO Reset
  152. RETURN
  153. * EOP: D:\DBSYS\CLASSES\BT4W\INVOICE.FRG
  154.  
  155. *-- Update summary fields and/or calculated fields in the detail band.
  156. PROCEDURE Upd_Vars
  157. *-- Summary calculation - Sum
  158. FUNHOURS=FUNHOURS+HOURS
  159. *-- Summary calculation - Sum
  160. JOBHOURS=JOBHOURS+HOURS
  161. *-- Summary calculation - Sum
  162. r_msum1=r_msum1+HOURS
  163. RETURN
  164. * EOP: Upd_Vars
  165.  
  166. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  167. PROCEDURE prnabort
  168. gl_prntflg=.F.
  169. RETURN
  170. * EOP: prnabort
  171.  
  172. *-- Reset group break variables.  Reinit summary
  173. *-- fields with reset set to a particular group band.
  174. PROCEDURE Grpinit
  175. IF gn_level <= 5
  176.    FUNHOURS=0
  177. ENDIF
  178. IF gn_level <= 4
  179.    JOBHOURS=0
  180. ENDIF
  181. IF gn_level <= 4
  182.    r_mvar4=JOBDESC
  183. ENDIF
  184. IF gn_level <= 5
  185.    r_mvar5=FUNDESC
  186. ENDIF
  187. RETURN
  188. * EOP: Grpinit
  189.  
  190. *-- Process Group Intro bands during group breaks
  191. PROCEDURE Grphead
  192. IF EOF()
  193.    RETURN
  194. ENDIF
  195. gl_widow=.T.         && enable widow checking
  196. IF gn_level <= 4
  197.    DO Head4
  198. ENDIF
  199. gn_level=0
  200. RETURN
  201. * EOP: Grphead.PRG
  202.  
  203. *-- Process Group Summary bands during group breaks
  204. PROCEDURE Grpfoot
  205. PARAMETER ln_level
  206. IF ln_level >= 95
  207.    DO Foot95
  208. ENDIF
  209. IF ln_level >= 96
  210.    DO Foot96
  211. ENDIF
  212. RETURN
  213. * EOP: Grpfoot.PRG
  214.  
  215.  
  216. PROCEDURE Pghead
  217. *-- Print HEADING parameter ie. REPORT FORM <name> HEADING <expC>
  218. IF .NOT. gl_plain .AND. gn_length > 0
  219.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(_rmargin-_lmargin))
  220.    ?
  221. ENDIF
  222. RETURN
  223. * EOP: Pghead
  224.  
  225. PROCEDURE Head4
  226. IF gn_level=1
  227.    RETURN
  228. ENDIF
  229. IF .NOT. gl_newpage
  230.    gl_newpage=.T.
  231.    EJECT PAGE
  232. ENDIF
  233. STRDATE='February 15, 1989'
  234. COMPDAYS=compdate-startdate
  235. IF 32 < _plength
  236.    IF (gl_widow .AND. _plineno+31 > gn_atline) ;
  237.    .OR. (gl_widow .AND. _plineno+31 > gn_atline)
  238.       EJECT PAGE
  239.    ENDIF
  240. ENDIF
  241. ?? "ASSOCIATED MANAGEMENT CONSULTANTS" AT 23
  242. ?
  243. ?? "1170 WELDSTONE COURT" AT 29
  244. ?
  245. ?? "SUITE 2205" AT 34
  246. ?
  247. ?? "ATLANTA, GA 30350" AT 31
  248. ?
  249. ?
  250. DEFINE BOX FROM 30 TO 48 HEIGHT 5 DOUBLE
  251. ?
  252. ?
  253. ?? "I N V O I C E" AT 33
  254. ?
  255. ?
  256. ?
  257. ?
  258. ?? "INVOICE DATE:" AT 0,
  259. ?? STRDATE FUNCTION "T" PICTURE "XXXXXXXXXXXXXXXXXXXXXXXX" AT 15
  260. ?
  261. ?
  262. DEFINE BOX FROM 4 TO 54 HEIGHT 7 SINGLE
  263. ?
  264. ?
  265. ?? "CUSTOMER:" AT 6,
  266. ?? CUSTNAME FUNCTION "T" AT 17
  267. ?
  268. ?? ADDRESS FUNCTION "T" AT 17
  269. ?
  270. ?? CITY FUNCTION "T" AT 17,
  271. ?? ", " ,
  272. ?? STATE FUNCTION "T" ,
  273. ?? "  " ,
  274. ?? ZIP FUNCTION "T" 
  275. ?
  276. ?
  277. ?
  278. ?
  279. DEFINE BOX FROM 4 TO 71 HEIGHT 7 SINGLE
  280. ?
  281. ?
  282. ?? "JOB:" AT 6,
  283. ?? JOBDESC FUNCTION "T" AT 11
  284. ?
  285. ?
  286. ?? "STARTING DATE:" AT 6,
  287. ?? STARTDATE AT 21,
  288. ?? "COMPLETION DATE:" AT 33,
  289. ?? COMPDATE AT 50,
  290. ?? "DAYS:" AT 61,
  291. ?? COMPDAYS PICTURE "999" AT 67
  292. ?
  293. ?
  294. ?
  295. ?
  296. ?? "ACTIVITY SUMMARY:" AT 6
  297. ?
  298. ?? "HOURS" AT 57
  299. ?
  300. ?
  301. gl_newpage=.F.
  302. RETURN
  303.  
  304. gl_newpage=.F.
  305.  
  306. gl_newpage=.F.
  307.  
  308. PROCEDURE Foot95
  309. ?? r_foot1 FUNCTION "T" AT 16,
  310. ?? FUNHOURS PICTURE "999.99" AT 56
  311. ?
  312. ?
  313. gl_newpage=.F.
  314. RETURN
  315.  
  316. PROCEDURE Foot96
  317. ?? "=========" AT 53
  318. ?
  319. ?? "TOTAL ALL ACTIVITIES" AT 28,
  320. ?? JOBHOURS PICTURE "99,999.99" AT 53
  321. ?
  322. ?
  323. ?
  324. ?
  325. DEFINE BOX FROM 4 TO 74 HEIGHT 5 DOUBLE
  326. ?
  327. ?
  328. ?? "TOTAL AMOUNT DUE:" AT 24,
  329. ?? r_foot2 PICTURE "999,999.99" AT 43
  330. ?
  331. ?
  332. ?
  333. ?
  334. ?
  335. ?? " THANKS FOR YOUR SUPPORT" AT 27
  336. ?
  337. ?
  338. ?
  339. gl_newpage=.F.
  340. RETURN
  341.  
  342. PROCEDURE Pgfoot
  343. PRIVATE _box
  344. gl_widow=.F.         && disable widow checking
  345. EJECT PAGE
  346. gl_newpage=.T.
  347. *-- is the page number greater than the ending page
  348. IF _pageno > _pepage
  349.    GOTO BOTTOM
  350.    SKIP
  351.    gn_level=0
  352. ENDIF
  353. IF .NOT. gl_plain .AND. gl_fandl
  354.    DO Pghead
  355. ENDIF
  356. IF gn_level = 0 .AND. gl_fandl
  357.    gn_level=1
  358.    DO Grphead
  359. ENDIF
  360. gl_widow=.T.         && enable widow checking
  361. RETURN
  362. * EOP: Pgfoot
  363.  
  364.  
  365. *-- Process page break when PLAIN option is used.
  366. PROCEDURE Pgplain
  367. PRIVATE _box
  368. EJECT PAGE
  369. IF gn_level = 0 .AND. gl_fandl
  370.    gn_level=1
  371.    DO Grphead
  372. ENDIF
  373. RETURN
  374. * EOP: Pgplain
  375.  
  376. *-- Reset dBASE environment prior to calling report
  377. PROCEDURE Reset
  378. SET SPACE &gc_space.
  379. SET TALK &gc_talk.
  380. ON ESCAPE
  381. ON PAGE
  382. RETURN
  383. * EOP: Reset
  384.  
  385.